package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import java.util.Date;

public class RHH_PLANILLA_EMPLEADOS {

    private Double UFV_MES_ACTUAL;
    private int ID;
    private int ID_USUARIO;
    private int ANTIGUEDAD_DIA;
    private int ANTIGUEDAD_MES;
    private int ANTIGUEDAD_ANO;
    private Date FECHA_INGRESO_EMPRESA;
    private String CARGO;
    private Date FECHA_RETIRO_EMPRESA;
    private String MOTIVO_RETIRO;
    private String OBSERVACION_RETIRO;
    private int DEPARTAMENTO;
    private int REGIONAL;
    private int SUCURSAL;
    private Double SUELDO;
    private Double SUELDO_CON_INCREMENTO;
    private Double BONO_ANTIGUEDAD;
    private Double TOTAL_GANADO_NO_IMPONIBLE;
    private Double TOTAL_GANADO;
    private Double MONTO_PAGADO_QUINCENA;
    private Double SANCION;
    private Double DEUDA_CELULAR;
    private Double SEGURO_LARGO_PLAZO;
    private Double RIESGO_COMUN;
    private Double COMISION_AFP;
    private Double SOLIDARIO_ASEGURADO;
    private Double SOLIDARIO_NACIONAL;
    private Double TOTAL_APORTE_LABORAL;
    private Double CSBP;
    private Double RIESGO_PROFESIONAL;
    private Double PRO_VIVIENDA;
    private Double APORTE_SOLIDARIO;
    private Double TOTAL_APORTE_PATRONAL;
    private Double SUELDO_NETO_SUJ_IMPUESTOS;
    private Double MINIMO_NO_IMPONIBLE;
    private Double DIFERENCIA_SUJ_IMPUESTOS;
    private Double IMPUESTO_LIQUIDADO;
    private Double COMPUTO_IVA_DDJJ;
    private Double SOBRE_2_SALARIOS_MIN;
    private Double SALDO_FAVOR;
    private Double SALDO_FAVOR_EMPLEADO;
    private Double SALDO_MES_ANTERIOR;
    private Double ACTUALIZACION;
    private Double SUB_TOTAL;
    private Double SALDO_TOTAL_FAVOR_EMPLEADO;
    private Double SALDO_UTILIZADO;
    private Double IMPUESTO_RETENIDO_PAGAR;
    private Double SALDO_FAVOR_SIGUIENTE_MES;
    private Double TOTAL_DESC_MES;
    private Double TOTAL_LIQUIDO_PAGABLE;
    private Double TOTAL_LIQUIDO_PAGABLE_IMPO;
    private Double UFV_MES_PASADO;        
    private Conexion con = null;
    private Double SALARIO_DIAS_TRABAJADOS;
    private int DIAS_TRABAJADOS;
    private int DIAS_MES;
    private int ID_CABECERA;

    public RHH_PLANILLA_EMPLEADOS(Conexion con) {
        this.con = con;
    }

    public RHH_PLANILLA_EMPLEADOS(Double UFV_MES_ACTUAL, int ID, int ID_USUARIO, int ANTIGUEDAD_DIA, int ANTIGUEDAD_MES, int ANTIGUEDAD_ANO, Date FECHA_INGRESO_EMPRESA, String CARGO, Date FECHA_RETIRO_EMPRESA, String MOTIVO_RETIRO, String OBSERVACION_RETIRO, int DEPARTAMENTO, int REGIONAL, int SUCURSAL, Double SUELDO, Double SUELDO_CON_INCREMENTO, Double BONO_ANTIGUEDAD, Double TOTAL_GANADO_NO_IMPONIBLE, Double TOTAL_GANADO, Double MONTO_PAGADO_QUINCENA, Double SANCION, Double DEUDA_CELULAR, Double SEGURO_LARGO_PLAZO, Double RIESGO_COMUN, Double COMISION_AFP, Double SOLIDARIO_ASEGURADO, Double SOLIDARIO_NACIONAL, Double TOTAL_APORTE_LABORAL, Double CSBP, Double RIESGO_PROFESIONAL, Double PRO_VIVIENDA, Double APORTE_SOLIDARIO, Double TOTAL_APORTE_PATRONAL, Double SUELDO_NETO_SUJ_IMPUESTOS, Double MINIMO_NO_IMPONIBLE, Double DIFERENCIA_SUJ_IMPUESTOS, Double IMPUESTO_LIQUIDADO, Double COMPUTO_IVA_DDJJ, Double SOBRE_2_SALARIOS_MIN, Double SALDO_FAVOR, Double SALDO_FAVOR_EMPLEADO, Double SALDO_MES_ANTERIOR, Double ACTUALIZACION, Double SUB_TOTAL, Double SALDO_TOTAL_FAVOR_EMPLEADO, Double SALDO_UTILIZADO, Double IMPUESTO_RETENIDO_PAGAR, Double SALDO_FAVOR_SIGUIENTE_MES, Double TOTAL_DESC_MES, Double TOTAL_LIQUIDO_PAGABLE, Double TOTAL_LIQUIDO_PAGABLE_IMPO, Double UFV_MES_PASADO,Double SALARIO_DIAS_TRABAJADOS, int DIAS_TRABAJADOS, int DIAS_MES, int ID_CABECERA) {
        this.UFV_MES_ACTUAL = UFV_MES_ACTUAL;
        this.ID = ID;
        this.ID_USUARIO = ID_USUARIO;
        this.ANTIGUEDAD_DIA = ANTIGUEDAD_DIA;
        this.ANTIGUEDAD_MES = ANTIGUEDAD_MES;
        this.ANTIGUEDAD_ANO = ANTIGUEDAD_ANO;
        this.FECHA_INGRESO_EMPRESA = FECHA_INGRESO_EMPRESA;
        this.CARGO = CARGO;
        this.FECHA_RETIRO_EMPRESA = FECHA_RETIRO_EMPRESA;
        this.MOTIVO_RETIRO = MOTIVO_RETIRO;
        this.OBSERVACION_RETIRO = OBSERVACION_RETIRO;
        this.DEPARTAMENTO = DEPARTAMENTO;
        this.REGIONAL = REGIONAL;
        this.SUCURSAL = SUCURSAL;
        this.SUELDO = SUELDO;
        this.SUELDO_CON_INCREMENTO = SUELDO_CON_INCREMENTO;
        this.BONO_ANTIGUEDAD = BONO_ANTIGUEDAD;
        this.TOTAL_GANADO_NO_IMPONIBLE = TOTAL_GANADO_NO_IMPONIBLE;
        this.TOTAL_GANADO = TOTAL_GANADO;
        this.MONTO_PAGADO_QUINCENA = MONTO_PAGADO_QUINCENA;
        this.SANCION = SANCION;
        this.DEUDA_CELULAR = DEUDA_CELULAR;
        this.SEGURO_LARGO_PLAZO = SEGURO_LARGO_PLAZO;
        this.RIESGO_COMUN = RIESGO_COMUN;
        this.COMISION_AFP = COMISION_AFP;
        this.SOLIDARIO_ASEGURADO = SOLIDARIO_ASEGURADO;
        this.SOLIDARIO_NACIONAL = SOLIDARIO_NACIONAL;
        this.TOTAL_APORTE_LABORAL = TOTAL_APORTE_LABORAL;
        this.CSBP = CSBP;
        this.RIESGO_PROFESIONAL = RIESGO_PROFESIONAL;
        this.PRO_VIVIENDA = PRO_VIVIENDA;
        this.APORTE_SOLIDARIO = APORTE_SOLIDARIO;
        this.TOTAL_APORTE_PATRONAL = TOTAL_APORTE_PATRONAL;
        this.SUELDO_NETO_SUJ_IMPUESTOS = SUELDO_NETO_SUJ_IMPUESTOS;
        this.MINIMO_NO_IMPONIBLE = MINIMO_NO_IMPONIBLE;
        this.DIFERENCIA_SUJ_IMPUESTOS = DIFERENCIA_SUJ_IMPUESTOS;
        this.IMPUESTO_LIQUIDADO = IMPUESTO_LIQUIDADO;
        this.COMPUTO_IVA_DDJJ = COMPUTO_IVA_DDJJ;
        this.SOBRE_2_SALARIOS_MIN = SOBRE_2_SALARIOS_MIN;
        this.SALDO_FAVOR = SALDO_FAVOR;
        this.SALDO_FAVOR_EMPLEADO = SALDO_FAVOR_EMPLEADO;
        this.SALDO_MES_ANTERIOR = SALDO_MES_ANTERIOR;
        this.ACTUALIZACION = ACTUALIZACION;
        this.SUB_TOTAL = SUB_TOTAL;
        this.SALDO_TOTAL_FAVOR_EMPLEADO = SALDO_TOTAL_FAVOR_EMPLEADO;
        this.SALDO_UTILIZADO = SALDO_UTILIZADO;
        this.IMPUESTO_RETENIDO_PAGAR = IMPUESTO_RETENIDO_PAGAR;
        this.SALDO_FAVOR_SIGUIENTE_MES = SALDO_FAVOR_SIGUIENTE_MES;
        this.TOTAL_DESC_MES = TOTAL_DESC_MES;
        this.TOTAL_LIQUIDO_PAGABLE = TOTAL_LIQUIDO_PAGABLE;
        this.TOTAL_LIQUIDO_PAGABLE_IMPO = TOTAL_LIQUIDO_PAGABLE_IMPO;
        this.UFV_MES_PASADO = UFV_MES_PASADO;    
        this.SALARIO_DIAS_TRABAJADOS = SALARIO_DIAS_TRABAJADOS;
        this.DIAS_TRABAJADOS = DIAS_TRABAJADOS;
        this.DIAS_MES = DIAS_MES;
    }
    
    public int Insertar() throws SQLException {
        String consulta = "insert into BROKER.RHH_PLANILLA_EMPLEADOS (SALARIO_DIAS_TRABAJADOS,DIAS_TRABAJADOS,DIAS_MES,UFV_MES_ACTUAL, ID, ID_USUARIO, ANTIGUEDAD_DIA, ANTIGUEDAD_MES, ANTIGUEDAD_ANO, FECHA_INGRESO_EMPRESA, CARGO, FECHA_RETIRO_EMPRESA, MOTIVO_RETIRO, OBSERVACION_RETIRO, DEPARTAMENTO, REGIONAL, SUCURSAL, SUELDO, SUELDO_CON_INCREMENTO, BONO_ANTIGUEDAD, TOTAL_GANADO_NO_IMPONIBLE, TOTAL_GANADO, MONTO_PAGADO_QUINCENA, SANCION, DEUDA_CELULAR, SEGURO_LARGO_PLAZO, RIESGO_COMUN, COMISION_AFP, SOLIDARIO_ASEGURADO, SOLIDARIO_NACIONAL, TOTAL_APORTE_LABORAL, CSBP, RIESGO_PROFESIONAL, PRO_VIVIENDA, APORTE_SOLIDARIO, TOTAL_APORTE_PATRONAL, SUELDO_NETO_SUJ_IMPUESTOS, MINIMO_NO_IMPONIBLE, DIFERENCIA_SUJ_IMPUESTOS, IMPUESTO_LIQUIDADO, COMPUTO_IVA_DDJJ, SOBRE_2_SALARIOS_MIN, SALDO_FAVOR, SALDO_FAVOR_EMPLEADO, SALDO_MES_ANTERIOR, ACTUALIZACION, SUB_TOTAL, SALDO_TOTAL_FAVOR_EMPLEADO, SALDO_UTILIZADO, IMPUESTO_RETENIDO_PAGAR, SALDO_FAVOR_SIGUIENTE_MES, TOTAL_DESC_MES, TOTAL_LIQUIDO_PAGABLE, TOTAL_LIQUIDO_PAGABLE_IMPO, UFV_MES_PASADO, ID_CABECERA) VALUES ("+SALARIO_DIAS_TRABAJADOS+","+DIAS_TRABAJADOS+","+DIAS_MES+","+ getUFV_MES_ACTUAL() + "," + ID + "," + ID_USUARIO + "," + ANTIGUEDAD_DIA + "," + ANTIGUEDAD_MES + "," + ANTIGUEDAD_ANO + ","+getFECHA_INGRESO_EMPRESA() +",'" + getCARGO() + "',"+getFECHA_RETIRO_EMPRESA()+",'" + getMOTIVO_RETIRO()+ "','" + getOBSERVACION_RETIRO() + "','" + getDEPARTAMENTO() + "','" + getREGIONAL() + "','" + getSUCURSAL() + "'," + SUELDO + "," + SUELDO_CON_INCREMENTO + "," + BONO_ANTIGUEDAD + "," + TOTAL_GANADO_NO_IMPONIBLE + "," + TOTAL_GANADO + "," + MONTO_PAGADO_QUINCENA + "," + SANCION + "," + DEUDA_CELULAR + "," + SEGURO_LARGO_PLAZO + "," + RIESGO_COMUN + "," + COMISION_AFP + "," + SOLIDARIO_ASEGURADO + "," + SOLIDARIO_NACIONAL + "," + TOTAL_APORTE_LABORAL + "," + CSBP + "," + RIESGO_PROFESIONAL + "," + PRO_VIVIENDA + "," + APORTE_SOLIDARIO + "," + TOTAL_APORTE_PATRONAL + "," + SUELDO_NETO_SUJ_IMPUESTOS + "," + MINIMO_NO_IMPONIBLE + "," + DIFERENCIA_SUJ_IMPUESTOS + "," + IMPUESTO_LIQUIDADO + "," + COMPUTO_IVA_DDJJ + "," + SOBRE_2_SALARIOS_MIN + "," + SALDO_FAVOR + "," + SALDO_FAVOR_EMPLEADO + "," + SALDO_MES_ANTERIOR + "," + ACTUALIZACION + "," + SUB_TOTAL + "," + SALDO_TOTAL_FAVOR_EMPLEADO + "," + SALDO_UTILIZADO + "," + IMPUESTO_RETENIDO_PAGAR + "," + SALDO_FAVOR_SIGUIENTE_MES + "," + TOTAL_DESC_MES + "," + TOTAL_LIQUIDO_PAGABLE + "," + TOTAL_LIQUIDO_PAGABLE_IMPO + "," + UFV_MES_PASADO + ", "+ID_CABECERA+")";
        con.EjecutarSentencia(consulta);
        consulta = "select BROKER.RHH_PLANILLA_EMPLEADOS_SEQ.currval as ID from dual";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        return rs.getInt("ID");
    }

    public boolean Modificar() throws SQLException {
        String consulta = "update BROKER.RHH_PLANILLA_EMPLEADOS set SALARIO_DIAS_TRABAJADOS="+SALARIO_DIAS_TRABAJADOS+", DIAS_TRABAJADOS="+DIAS_TRABAJADOS+", DIAS_MES="+DIAS_MES+" ,UFV_MES_ACTUAL = " + UFV_MES_ACTUAL + ",ID = " + ID + ",ID_USUARIO = " + ID_USUARIO + ",ANTIGUEDAD_DIA = " + ANTIGUEDAD_DIA + ",ANTIGUEDAD_MES = " + ANTIGUEDAD_MES + ",ANTIGUEDAD_ANO = " + ANTIGUEDAD_ANO + ",FECHA_INGRESO_EMPRESA="+ getFECHA_INGRESO_EMPRESA() + ",CARGO = '" + CARGO + "',FECHA_RETIRO_EMPRESA = "+getFECHA_RETIRO_EMPRESA()+",MOTIVO_RETIRO = '" + MOTIVO_RETIRO + "',OBSERVACION_RETIRO = '" + OBSERVACION_RETIRO + "',DEPARTAMENTO = '" + DEPARTAMENTO + "',REGIONAL = '" + REGIONAL + "',SUCURSAL = '" + SUCURSAL + "',SUELDO = " + SUELDO + ",SUELDO_CON_INCREMENTO = " + SUELDO_CON_INCREMENTO + ",BONO_ANTIGUEDAD = " + BONO_ANTIGUEDAD + ",TOTAL_GANADO_NO_IMPONIBLE = " + TOTAL_GANADO_NO_IMPONIBLE + ",TOTAL_GANADO = " + TOTAL_GANADO + ",MONTO_PAGADO_QUINCENA = " + MONTO_PAGADO_QUINCENA + ",SANCION = " + SANCION + ",DEUDA_CELULAR = " + DEUDA_CELULAR + ",SEGURO_LARGO_PLAZO = " + SEGURO_LARGO_PLAZO + ",RIESGO_COMUN = " + RIESGO_COMUN + ",COMISION_AFP = " + COMISION_AFP + ",SOLIDARIO_ASEGURADO = " + SOLIDARIO_ASEGURADO + ",SOLIDARIO_NACIONAL = " + SOLIDARIO_NACIONAL + ",TOTAL_APORTE_LABORAL = " + TOTAL_APORTE_LABORAL + ",CSBP = " + CSBP + ",RIESGO_PROFESIONAL = " + RIESGO_PROFESIONAL + ",PRO_VIVIENDA = " + PRO_VIVIENDA + ",APORTE_SOLIDARIO = " + APORTE_SOLIDARIO + ",TOTAL_APORTE_PATRONAL = " + TOTAL_APORTE_PATRONAL + ",SUELDO_NETO_SUJ_IMPUESTOS = " + SUELDO_NETO_SUJ_IMPUESTOS + ",MINIMO_NO_IMPONIBLE = " + MINIMO_NO_IMPONIBLE + ",DIFERENCIA_SUJ_IMPUESTOS = " + DIFERENCIA_SUJ_IMPUESTOS + ",IMPUESTO_LIQUIDADO = " + IMPUESTO_LIQUIDADO + ",COMPUTO_IVA_DDJJ = " + COMPUTO_IVA_DDJJ + ",SOBRE_2_SALARIOS_MIN = " + SOBRE_2_SALARIOS_MIN + ",SALDO_FAVOR = " + SALDO_FAVOR + ",SALDO_FAVOR_EMPLEADO = " + SALDO_FAVOR_EMPLEADO + ",SALDO_MES_ANTERIOR = " + SALDO_MES_ANTERIOR + ",ACTUALIZACION = " + ACTUALIZACION + ",SUB_TOTAL = " + SUB_TOTAL + ",SALDO_TOTAL_FAVOR_EMPLEADO = " + SALDO_TOTAL_FAVOR_EMPLEADO + ",SALDO_UTILIZADO = " + SALDO_UTILIZADO + ",IMPUESTO_RETENIDO_PAGAR = " + IMPUESTO_RETENIDO_PAGAR + ",SALDO_FAVOR_SIGUIENTE_MES = " + SALDO_FAVOR_SIGUIENTE_MES + ",TOTAL_DESC_MES = " + TOTAL_DESC_MES + ",TOTAL_LIQUIDO_PAGABLE = " + TOTAL_LIQUIDO_PAGABLE + ",TOTAL_LIQUIDO_PAGABLE_IMPO = " + TOTAL_LIQUIDO_PAGABLE_IMPO + ",UFV_MES_PASADO = " + UFV_MES_PASADO + ", ID_CABECERA="+ID_CABECERA+" where ID =  " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }
    public boolean Generar(int ano, int mes) throws SQLException {
        RHH_PLANILLA_EMPLEADOS_CABECE ca = new RHH_PLANILLA_EMPLEADOS_CABECE(con).Buscar(ano, mes);
        ca.setESTADO(0);
        ca.Modificar();
        return true;
    }    
    
    public double Promedio3Salarios(int id_usuario, int mes, int ano) throws SQLException
    {
        double total =0.0;
        int mes_act=mes;
        int ano_act=ano;
        for (int i = 0; i < 3; i++) 
        {            
            RHH_PLANILLA_EMPLEADOS planilla = new RHH_PLANILLA_EMPLEADOS(con).BuscarxUSUARIO(ano_act, mes_act, id_usuario);
            if(planilla!=null)
                total+=planilla.getTOTAL_LIQUIDO_PAGABLE_IMPO();
            
            if(mes_act>1)
                mes_act--;
            else
            {
                mes_act=12;
                ano_act--;
            }            
        }                        
        return (total/3);
    }
    
    public boolean Abrir(int mes, int ano) throws SQLException {
        RHH_PLANILLA_EMPLEADOS_CABECE ca = new RHH_PLANILLA_EMPLEADOS_CABECE(con).Buscar(ano, mes);
        if(ca!=null)
        {
            ca.setESTADO(3);
            ca.Modificar();
            return true;
        }
        else
            return false;
    }

    public RHH_PLANILLA_EMPLEADOS Buscar(int id) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_EMPLEADOS where ID = " + id;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_EMPLEADOS> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }
    public List<RHH_PLANILLA_EMPLEADOS> BuscarXcabecera(int id_cabecera) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_EMPLEADOS where ID_CABECERA = " + id_cabecera;
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);
    }

    public List<RHH_PLANILLA_EMPLEADOS> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_EMPLEADOS";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_EMPLEADOS> lista = Cargar(rs);
        return lista;
    }
    public boolean eliminarxCabecera(int id_cabecera) throws SQLException {
        String consulta = "delete from BROKER.RHH_PLANILLA_EMPLEADOS where ID_CABECERA="+id_cabecera;
        con.EjecutarSentencia(consulta);
        return true;
    }
    public RHH_PLANILLA_EMPLEADOS BuscarxUSUARIO(int ano, int mes, int usr) throws SQLException {
        RHH_PLANILLA_EMPLEADOS_CABECE ca = new RHH_PLANILLA_EMPLEADOS_CABECE(con).Buscar(ano, mes);
        if(ca!=null)
        {
            String consulta = "SELECT RHH_PLANILLA_EMPLEADOS.*\n" +
                                "  FROM BROKER.RHH_PLANILLA_EMPLEADOS\n" +
                                " WHERE     (RHH_PLANILLA_EMPLEADOS.ID_CABECERA = "+ca.getID()+")\n" +                                
                                "       AND (RHH_PLANILLA_EMPLEADOS.ID_USUARIO = "+usr+")";
            ResultSet rs = con.EjecutarConsulta(consulta);
            List<RHH_PLANILLA_EMPLEADOS> lista = Cargar(rs);
            if(lista.size()>0)
                return lista.get(0);
            else
                return null;
        }
        else
            return null;
    }
    public RHH_PLANILLA_EMPLEADOS BuscarCerradaxUSUARIO(int ano, int mes, int usr) throws SQLException {
        RHH_PLANILLA_EMPLEADOS_CABECE ca = new RHH_PLANILLA_EMPLEADOS_CABECE(con).Buscar(ano, mes);
        if(ca!=null)
        {
            String consulta = "SELECT RHH_PLANILLA_EMPLEADOS.*\n" +
                                "  FROM BROKER.RHH_PLANILLA_EMPLEADOS\n" +
                                " WHERE     (RHH_PLANILLA_EMPLEADOS.ID_CABECERA = "+ca.getID()+")\n" +                                
                                "       AND (RHH_PLANILLA_EMPLEADOS.ID_USUARIO = "+usr+")";
            ResultSet rs = con.EjecutarConsulta(consulta);
            List<RHH_PLANILLA_EMPLEADOS> lista = Cargar(rs);
            if(lista.size()>0)
                return lista.get(0);
            else
                return null;
        }
        else
            return null;
    }
    
    public List<RHH_PLANILLA_EMPLEADOS> BuscarXfecha(int ano, int mes) throws SQLException {
        RHH_PLANILLA_EMPLEADOS_CABECE ca = new RHH_PLANILLA_EMPLEADOS_CABECE(con).Buscar(ano, mes);
        if(ca!=null)
        {
            String consulta = "SELECT RHH_PLANILLA_EMPLEADOS.*\n" +
                                "  FROM BROKER.RHH_PLANILLA_EMPLEADOS\n" +
                                " WHERE     (RHH_PLANILLA_EMPLEADOS.ID_CABECERA = "+ca.getID()+")";                                                                
            ResultSet rs = con.EjecutarConsulta(consulta);        
            return Cargar(rs);
        }
        else
            return new ArrayList<>();
    }
    public boolean iscerrado(int ano, int mes) throws SQLException {
        RHH_PLANILLA_EMPLEADOS_CABECE ca = new RHH_PLANILLA_EMPLEADOS_CABECE(con).Buscar(ano, mes);
        if(ca!=null)
        {
            if(ca.getESTADO()==0)
                return true;
            else
                return false;
        }
        else
            return false;
    }        
        
    
    public void generar(int ano, int mes) throws SQLException {
        RHH_PLANILLA_EMPLEADOS_CABECE cabe = new RHH_PLANILLA_EMPLEADOS_CABECE(con).Buscar(ano, mes);
        cabe.setESTADO(0);
        cabe.setESTADO_IMPO(0);
        cabe.Modificar();
    }            

    public List<RHH_PLANILLA_EMPLEADOS> Cargar(ResultSet rs) throws SQLException {
        List<RHH_PLANILLA_EMPLEADOS> lista = new ArrayList<>();
        while (rs.next()) {
            RHH_PLANILLA_EMPLEADOS objeto = new RHH_PLANILLA_EMPLEADOS(con);
            objeto.setUFV_MES_ACTUAL(rs.getDouble("UFV_MES_ACTUAL"));
            objeto.setID(rs.getInt("ID"));
            objeto.setID_USUARIO(rs.getInt("ID_USUARIO"));
            objeto.setANTIGUEDAD_DIA(rs.getInt("ANTIGUEDAD_DIA"));
            objeto.setANTIGUEDAD_MES(rs.getInt("ANTIGUEDAD_MES"));
            objeto.setANTIGUEDAD_ANO(rs.getInt("ANTIGUEDAD_ANO"));
            objeto.setFECHA_INGRESO_EMPRESA(rs.getDate("FECHA_INGRESO_EMPRESA"));
            objeto.setCARGO(rs.getString("CARGO"));
            objeto.setFECHA_RETIRO_EMPRESA(rs.getDate("FECHA_RETIRO_EMPRESA"));
            objeto.setMOTIVO_RETIRO(rs.getString("MOTIVO_RETIRO"));
            objeto.setOBSERVACION_RETIRO(rs.getString("OBSERVACION_RETIRO"));
            objeto.setDEPARTAMENTO(rs.getInt("DEPARTAMENTO"));
            objeto.setREGIONAL(rs.getInt("REGIONAL"));
            objeto.setSUCURSAL(rs.getInt("SUCURSAL"));
            objeto.setSUELDO(rs.getDouble("SUELDO"));
            objeto.setSUELDO_CON_INCREMENTO(rs.getDouble("SUELDO_CON_INCREMENTO"));
            objeto.setBONO_ANTIGUEDAD(rs.getDouble("BONO_ANTIGUEDAD"));
            objeto.setTOTAL_GANADO_NO_IMPONIBLE(rs.getDouble("TOTAL_GANADO_NO_IMPONIBLE"));
            objeto.setTOTAL_GANADO(rs.getDouble("TOTAL_GANADO"));
            objeto.setMONTO_PAGADO_QUINCENA(rs.getDouble("MONTO_PAGADO_QUINCENA"));
            objeto.setSANCION(rs.getDouble("SANCION"));
            objeto.setDEUDA_CELULAR(rs.getDouble("DEUDA_CELULAR"));
            objeto.setSEGURO_LARGO_PLAZO(rs.getDouble("SEGURO_LARGO_PLAZO"));
            objeto.setRIESGO_COMUN(rs.getDouble("RIESGO_COMUN"));
            objeto.setCOMISION_AFP(rs.getDouble("COMISION_AFP"));
            objeto.setSOLIDARIO_ASEGURADO(rs.getDouble("SOLIDARIO_ASEGURADO"));
            objeto.setSOLIDARIO_NACIONAL(rs.getDouble("SOLIDARIO_NACIONAL"));
            objeto.setTOTAL_APORTE_LABORAL(rs.getDouble("TOTAL_APORTE_LABORAL"));
            objeto.setCSBP(rs.getDouble("CSBP"));
            objeto.setRIESGO_PROFESIONAL(rs.getDouble("RIESGO_PROFESIONAL"));
            objeto.setPRO_VIVIENDA(rs.getDouble("PRO_VIVIENDA"));
            objeto.setAPORTE_SOLIDARIO(rs.getDouble("APORTE_SOLIDARIO"));
            objeto.setTOTAL_APORTE_PATRONAL(rs.getDouble("TOTAL_APORTE_PATRONAL"));
            objeto.setSUELDO_NETO_SUJ_IMPUESTOS(rs.getDouble("SUELDO_NETO_SUJ_IMPUESTOS"));
            objeto.setMINIMO_NO_IMPONIBLE(rs.getDouble("MINIMO_NO_IMPONIBLE"));
            objeto.setDIFERENCIA_SUJ_IMPUESTOS(rs.getDouble("DIFERENCIA_SUJ_IMPUESTOS"));
            objeto.setIMPUESTO_LIQUIDADO(rs.getDouble("IMPUESTO_LIQUIDADO"));
            objeto.setCOMPUTO_IVA_DDJJ(rs.getDouble("COMPUTO_IVA_DDJJ"));
            objeto.setSOBRE_2_SALARIOS_MIN(rs.getDouble("SOBRE_2_SALARIOS_MIN"));
            objeto.setSALDO_FAVOR(rs.getDouble("SALDO_FAVOR"));
            objeto.setSALDO_FAVOR_EMPLEADO(rs.getDouble("SALDO_FAVOR_EMPLEADO"));
            objeto.setSALDO_MES_ANTERIOR(rs.getDouble("SALDO_MES_ANTERIOR"));
            objeto.setACTUALIZACION(rs.getDouble("ACTUALIZACION"));
            objeto.setSUB_TOTAL(rs.getDouble("SUB_TOTAL"));
            objeto.setSALDO_TOTAL_FAVOR_EMPLEADO(rs.getDouble("SALDO_TOTAL_FAVOR_EMPLEADO"));
            objeto.setSALDO_UTILIZADO(rs.getDouble("SALDO_UTILIZADO"));
            objeto.setIMPUESTO_RETENIDO_PAGAR(rs.getDouble("IMPUESTO_RETENIDO_PAGAR"));
            objeto.setSALDO_FAVOR_SIGUIENTE_MES(rs.getDouble("SALDO_FAVOR_SIGUIENTE_MES"));
            objeto.setTOTAL_DESC_MES(rs.getDouble("TOTAL_DESC_MES"));
            objeto.setTOTAL_LIQUIDO_PAGABLE(rs.getDouble("TOTAL_LIQUIDO_PAGABLE"));
            objeto.setTOTAL_LIQUIDO_PAGABLE_IMPO(rs.getDouble("TOTAL_LIQUIDO_PAGABLE_IMPO"));
            objeto.setUFV_MES_PASADO(rs.getDouble("UFV_MES_PASADO"));            
            objeto.setSALARIO_DIAS_TRABAJADOS(rs.getDouble("SALARIO_DIAS_TRABAJADOS"));
            objeto.setDIAS_MES(rs.getInt("DIAS_MES"));
            objeto.setDIAS_TRABAJADOS(rs.getInt("DIAS_TRABAJADOS"));
            objeto.setID_CABECERA(rs.getInt("ID_CABECERA"));
            lista.add(objeto);
        }
        return lista;
    }

    public int getID_CABECERA() {
        return ID_CABECERA;
    }

    public void setID_CABECERA(int ID_CABECERA) {
        this.ID_CABECERA = ID_CABECERA;
    }    
    
    public Double getSALARIO_DIAS_TRABAJADOS() {
        return SALARIO_DIAS_TRABAJADOS;
    }

    public void setSALARIO_DIAS_TRABAJADOS(Double SALARIO_DIAS_TRABAJADOS) {
        this.SALARIO_DIAS_TRABAJADOS = SALARIO_DIAS_TRABAJADOS;
    }

    public int getDIAS_TRABAJADOS() {
        return DIAS_TRABAJADOS;
    }

    public void setDIAS_TRABAJADOS(int DIAS_TRABAJADOS) {
        this.DIAS_TRABAJADOS = DIAS_TRABAJADOS;
    }

    public int getDIAS_MES() {
        return DIAS_MES;
    }

    public void setDIAS_MES(int DIAS_MES) {
        this.DIAS_MES = DIAS_MES;
    }        
        
    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public int getID_USUARIO() {
        return ID_USUARIO;
    }

    public void setID_USUARIO(int ID_USUARIO) {
        this.ID_USUARIO = ID_USUARIO;
    }

    public int getANTIGUEDAD_DIA() {
        return ANTIGUEDAD_DIA;
    }

    public void setANTIGUEDAD_DIA(int ANTIGUEDAD_DIA) {
        this.ANTIGUEDAD_DIA = ANTIGUEDAD_DIA;
    }

    public int getANTIGUEDAD_MES() {
        return ANTIGUEDAD_MES;
    }

    public void setANTIGUEDAD_MES(int ANTIGUEDAD_MES) {
        this.ANTIGUEDAD_MES = ANTIGUEDAD_MES;
    }

    public int getANTIGUEDAD_ANO() {
        return ANTIGUEDAD_ANO;
    }

    public void setANTIGUEDAD_ANO(int ANTIGUEDAD_ANO) {
        this.ANTIGUEDAD_ANO = ANTIGUEDAD_ANO;
    }
    
    public Double getUFV_MES_ACTUAL() {
        return UFV_MES_ACTUAL;        
    }

    public void setUFV_MES_ACTUAL(Double UFV_MES_ACTUAL) {
        this.UFV_MES_ACTUAL = UFV_MES_ACTUAL;
    }

    public String getFECHA_INGRESO_EMPRESA() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_INGRESO_EMPRESA!=null) return "to_date('"+sdf.format(FECHA_INGRESO_EMPRESA)+"','dd/MM/yyyy')";
        else return "null";
    }
    public Date getFECHA_INGRESO_EMPRESAindate() {        
        return FECHA_INGRESO_EMPRESA;        
    }

    public void setFECHA_INGRESO_EMPRESA(Date FECHA_INGRESO_EMPRESA) {
        this.FECHA_INGRESO_EMPRESA = FECHA_INGRESO_EMPRESA;
    }

    public String getCARGO() {
        if(CARGO!=null)return CARGO;
        else return "";
    }

    public void setCARGO(String CARGO) {
        this.CARGO = CARGO;
    }

    public String getFECHA_RETIRO_EMPRESA() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_RETIRO_EMPRESA!=null) return "to_date('"+sdf.format(FECHA_RETIRO_EMPRESA)+"','dd/MM/yyyy')";
        else return "null";
    }
    public String getFECHA_RETIRO_EMPRESAconformato() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if(FECHA_RETIRO_EMPRESA!=null) return sdf.format(FECHA_RETIRO_EMPRESA);
        else return "";
    }
    public Date getFECHA_RETIRO_EMPRESAinDate() {
        return FECHA_RETIRO_EMPRESA;
    }

    public void setFECHA_RETIRO_EMPRESA(Date FECHA_RETIRO_EMPRESA) {
        this.FECHA_RETIRO_EMPRESA = FECHA_RETIRO_EMPRESA;
    }

    public String getMOTIVO_RETIRO() {
        if(MOTIVO_RETIRO!=null) return MOTIVO_RETIRO;
        else return "";
    }

    public void setMOTIVO_RETIRO(String MOTIVO_RETIRO) {
        this.MOTIVO_RETIRO = MOTIVO_RETIRO;
    }

    public String getOBSERVACION_RETIRO() {
        if(OBSERVACION_RETIRO!=null) return OBSERVACION_RETIRO;
        else return "";
    }

    public void setOBSERVACION_RETIRO(String OBSERVACION_RETIRO) {
        this.OBSERVACION_RETIRO = OBSERVACION_RETIRO;
    }

    public int getDEPARTAMENTO() {
        return DEPARTAMENTO;
    }

    public void setDEPARTAMENTO(int DEPARTAMENTO) {
        this.DEPARTAMENTO = DEPARTAMENTO;
    }

    public int getREGIONAL() {
        return REGIONAL;        
    }

    public void setREGIONAL(int REGIONAL) {
        this.REGIONAL = REGIONAL;
    }

    public int getSUCURSAL() {
        return SUCURSAL;        
    }

    public void setSUCURSAL(int SUCURSAL) {
        this.SUCURSAL = SUCURSAL;
    }

    public Double getSUELDO() {
        return SUELDO;
    }

    public void setSUELDO(Double SUELDO) {
        this.SUELDO = SUELDO;
    }

    public Double getSUELDO_CON_INCREMENTO() {
        return SUELDO_CON_INCREMENTO;
    }

    public void setSUELDO_CON_INCREMENTO(Double SUELDO_CON_INCREMENTO) {
        this.SUELDO_CON_INCREMENTO = SUELDO_CON_INCREMENTO;
    }

    public Double getBONO_ANTIGUEDAD() {
        return BONO_ANTIGUEDAD;
    }

    public void setBONO_ANTIGUEDAD(Double BONO_ANTIGUEDAD) {
        this.BONO_ANTIGUEDAD = BONO_ANTIGUEDAD;
    }

    public Double getTOTAL_GANADO_NO_IMPONIBLE() {
        return TOTAL_GANADO_NO_IMPONIBLE;
    }

    public void setTOTAL_GANADO_NO_IMPONIBLE(Double TOTAL_GANADO_NO_IMPONIBLE) {
        this.TOTAL_GANADO_NO_IMPONIBLE = TOTAL_GANADO_NO_IMPONIBLE;
    }

    public Double getTOTAL_GANADO() {
        return TOTAL_GANADO;
    }

    public void setTOTAL_GANADO(Double TOTAL_GANADO) {
        this.TOTAL_GANADO = TOTAL_GANADO;
    }

    public Double getMONTO_PAGADO_QUINCENA() {
        return MONTO_PAGADO_QUINCENA;
    }

    public void setMONTO_PAGADO_QUINCENA(Double MONTO_PAGADO_QUINCENA) {
        this.MONTO_PAGADO_QUINCENA = MONTO_PAGADO_QUINCENA;
    }

    public Double getSANCION() {
        return SANCION;
    }

    public void setSANCION(Double SANCION) {
        this.SANCION = SANCION;
    }

    public Double getDEUDA_CELULAR() {
        return DEUDA_CELULAR;
    }

    public void setDEUDA_CELULAR(Double DEUDA_CELULAR) {
        this.DEUDA_CELULAR = DEUDA_CELULAR;
    }

    public Double getSEGURO_LARGO_PLAZO() {
        return SEGURO_LARGO_PLAZO;
    }

    public void setSEGURO_LARGO_PLAZO(Double SEGURO_LARGO_PLAZO) {
        this.SEGURO_LARGO_PLAZO = SEGURO_LARGO_PLAZO;
    }

    public Double getRIESGO_COMUN() {
        return RIESGO_COMUN;
    }

    public void setRIESGO_COMUN(Double RIESGO_COMUN) {
        this.RIESGO_COMUN = RIESGO_COMUN;
    }

    public Double getCOMISION_AFP() {
        return COMISION_AFP;
    }

    public void setCOMISION_AFP(Double COMISION_AFP) {
        this.COMISION_AFP = COMISION_AFP;
    }

    public Double getSOLIDARIO_ASEGURADO() {
        return SOLIDARIO_ASEGURADO;
    }

    public void setSOLIDARIO_ASEGURADO(Double SOLIDARIO_ASEGURADO) {
        this.SOLIDARIO_ASEGURADO = SOLIDARIO_ASEGURADO;
    }

    public Double getSOLIDARIO_NACIONAL() {
        return SOLIDARIO_NACIONAL;
    }

    public void setSOLIDARIO_NACIONAL(Double SOLIDARIO_NACIONAL) {
        this.SOLIDARIO_NACIONAL = SOLIDARIO_NACIONAL;
    }

    public Double getTOTAL_APORTE_LABORAL() {
        return TOTAL_APORTE_LABORAL;
    }

    public void setTOTAL_APORTE_LABORAL(Double TOTAL_APORTE_LABORAL) {
        this.TOTAL_APORTE_LABORAL = TOTAL_APORTE_LABORAL;
    }

    public Double getCSBP() {
        return CSBP;
    }

    public void setCSBP(Double CSBP) {
        this.CSBP = CSBP;
    }

    public Double getRIESGO_PROFESIONAL() {
        return RIESGO_PROFESIONAL;
    }

    public void setRIESGO_PROFESIONAL(Double RIESGO_PROFESIONAL) {
        this.RIESGO_PROFESIONAL = RIESGO_PROFESIONAL;
    }

    public Double getPRO_VIVIENDA() {
        return PRO_VIVIENDA;
    }

    public void setPRO_VIVIENDA(Double PRO_VIVIENDA) {
        this.PRO_VIVIENDA = PRO_VIVIENDA;
    }

    public Double getAPORTE_SOLIDARIO() {
        return APORTE_SOLIDARIO;
    }

    public void setAPORTE_SOLIDARIO(Double APORTE_SOLIDARIO) {
        this.APORTE_SOLIDARIO = APORTE_SOLIDARIO;
    }

    public Double getTOTAL_APORTE_PATRONAL() {
        return TOTAL_APORTE_PATRONAL;
    }

    public void setTOTAL_APORTE_PATRONAL(Double TOTAL_APORTE_PATRONAL) {
        this.TOTAL_APORTE_PATRONAL = TOTAL_APORTE_PATRONAL;
    }

    public Double getSUELDO_NETO_SUJ_IMPUESTOS() {
        return SUELDO_NETO_SUJ_IMPUESTOS;
    }

    public void setSUELDO_NETO_SUJ_IMPUESTOS(Double SUELDO_NETO_SUJ_IMPUESTOS) {
        this.SUELDO_NETO_SUJ_IMPUESTOS = SUELDO_NETO_SUJ_IMPUESTOS;
    }

    public Double getMINIMO_NO_IMPONIBLE() {
        return MINIMO_NO_IMPONIBLE;
    }

    public void setMINIMO_NO_IMPONIBLE(Double MINIMO_NO_IMPONIBLE) {
        this.MINIMO_NO_IMPONIBLE = MINIMO_NO_IMPONIBLE;
    }

    public Double getDIFERENCIA_SUJ_IMPUESTOS() {
        return DIFERENCIA_SUJ_IMPUESTOS;
    }

    public void setDIFERENCIA_SUJ_IMPUESTOS(Double DIFERENCIA_SUJ_IMPUESTOS) {
        this.DIFERENCIA_SUJ_IMPUESTOS = DIFERENCIA_SUJ_IMPUESTOS;
    }

    public Double getIMPUESTO_LIQUIDADO() {
        return IMPUESTO_LIQUIDADO;
    }

    public void setIMPUESTO_LIQUIDADO(Double IMPUESTO_LIQUIDADO) {
        this.IMPUESTO_LIQUIDADO = IMPUESTO_LIQUIDADO;
    }

    public Double getCOMPUTO_IVA_DDJJ() {
        return COMPUTO_IVA_DDJJ;
    }

    public void setCOMPUTO_IVA_DDJJ(Double COMPUTO_IVA_DDJJ) {
        this.COMPUTO_IVA_DDJJ = COMPUTO_IVA_DDJJ;
    }

    public Double getSOBRE_2_SALARIOS_MIN() {
        return SOBRE_2_SALARIOS_MIN;
    }

    public void setSOBRE_2_SALARIOS_MIN(Double SOBRE_2_SALARIOS_MIN) {
        this.SOBRE_2_SALARIOS_MIN = SOBRE_2_SALARIOS_MIN;
    }

    public Double getSALDO_FAVOR() {
        return SALDO_FAVOR;
    }

    public void setSALDO_FAVOR(Double SALDO_FAVOR) {
        this.SALDO_FAVOR = SALDO_FAVOR;
    }

    public Double getSALDO_FAVOR_EMPLEADO() {
        return SALDO_FAVOR_EMPLEADO;
    }

    public void setSALDO_FAVOR_EMPLEADO(Double SALDO_FAVOR_EMPLEADO) {
        this.SALDO_FAVOR_EMPLEADO = SALDO_FAVOR_EMPLEADO;
    }

    public Double getSALDO_MES_ANTERIOR() {
        return SALDO_MES_ANTERIOR;
    }

    public void setSALDO_MES_ANTERIOR(Double SALDO_MES_ANTERIOR) {
        this.SALDO_MES_ANTERIOR = SALDO_MES_ANTERIOR;
    }

    public Double getACTUALIZACION() {
        return ACTUALIZACION;
    }

    public void setACTUALIZACION(Double ACTUALIZACION) {
        this.ACTUALIZACION = ACTUALIZACION;
    }

    public Double getSUB_TOTAL() {
        return SUB_TOTAL;
    }

    public void setSUB_TOTAL(Double SUB_TOTAL) {
        this.SUB_TOTAL = SUB_TOTAL;
    }

    public Double getSALDO_TOTAL_FAVOR_EMPLEADO() {
        return SALDO_TOTAL_FAVOR_EMPLEADO;
    }

    public void setSALDO_TOTAL_FAVOR_EMPLEADO(Double SALDO_TOTAL_FAVOR_EMPLEADO) {
        this.SALDO_TOTAL_FAVOR_EMPLEADO = SALDO_TOTAL_FAVOR_EMPLEADO;
    }

    public Double getSALDO_UTILIZADO() {
        return SALDO_UTILIZADO;
    }

    public void setSALDO_UTILIZADO(Double SALDO_UTILIZADO) {
        this.SALDO_UTILIZADO = SALDO_UTILIZADO;
    }

    public Double getIMPUESTO_RETENIDO_PAGAR() {
        return IMPUESTO_RETENIDO_PAGAR;
    }

    public void setIMPUESTO_RETENIDO_PAGAR(Double IMPUESTO_RETENIDO_PAGAR) {
        this.IMPUESTO_RETENIDO_PAGAR = IMPUESTO_RETENIDO_PAGAR;
    }

    public Double getSALDO_FAVOR_SIGUIENTE_MES() {
        return SALDO_FAVOR_SIGUIENTE_MES;
    }

    public void setSALDO_FAVOR_SIGUIENTE_MES(Double SALDO_FAVOR_SIGUIENTE_MES) {
        this.SALDO_FAVOR_SIGUIENTE_MES = SALDO_FAVOR_SIGUIENTE_MES;
    }

    public Double getTOTAL_DESC_MES() {
        return TOTAL_DESC_MES;
    }

    public void setTOTAL_DESC_MES(Double TOTAL_DESC_MES) {
        this.TOTAL_DESC_MES = TOTAL_DESC_MES;
    }

    public Double getTOTAL_LIQUIDO_PAGABLE() {
        return TOTAL_LIQUIDO_PAGABLE;
    }

    public void setTOTAL_LIQUIDO_PAGABLE(Double TOTAL_LIQUIDO_PAGABLE) {
        this.TOTAL_LIQUIDO_PAGABLE = TOTAL_LIQUIDO_PAGABLE;
    }

    public Double getTOTAL_LIQUIDO_PAGABLE_IMPO() {
        return TOTAL_LIQUIDO_PAGABLE_IMPO;
    }

    public void setTOTAL_LIQUIDO_PAGABLE_IMPO(Double TOTAL_LIQUIDO_PAGABLE_IMPO) {
        this.TOTAL_LIQUIDO_PAGABLE_IMPO = TOTAL_LIQUIDO_PAGABLE_IMPO;
    }

    public Double getUFV_MES_PASADO() {
        return UFV_MES_PASADO;
    }

    public void setUFV_MES_PASADO(Double UFV_MES_PASADO) {
        this.UFV_MES_PASADO = UFV_MES_PASADO;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }              
    
}
